package com.ecable.action;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.org.apache.commons.beanutils.BeanUtils;
import com.ecable.bean.StateTO;
import com.ecable.delegate.StateMgrDelegate;
import com.ecable.exception.ConnectionException;
import com.ecable.exception.LoginException;
import com.ecable.formbean.StateFormBean;
import com.ecable.util.UtilConstants;

public class AddStateAction extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2438539529982170011L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		RequestDispatcher rd = null;
		boolean flag = false;
		String path = "";
		StateFormBean sfb = new StateFormBean();

		Map map = request.getParameterMap();
		try {
			BeanUtils.populate(sfb, map);
		} catch (IllegalAccessException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (InvocationTargetException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		try {
			StateTO sto = new StateTO(sfb);
			StateMgrDelegate sdelegate = new StateMgrDelegate();
			try {
				flag = sdelegate.insertState(sto);
			}

			catch (ConnectionException ce) {
				throw new ServletException("server busy please try again");
			}

			catch (LoginException le) {
				request.setAttribute("status", UtilConstants._INVALID_USER);
				rd = request
						.getRequestDispatcher(UtilConstants._LOGIN_FAILED_PAGE);
			}

			if (flag) {

				request.setAttribute("status",
						UtilConstants.STATE_INSERTED_SUCCESS);

				path = UtilConstants._STATE_HOME;
			} else {

				request.setAttribute("status",
						UtilConstants.STATE_INSERTED_FAIL);
				path = UtilConstants._STATE_HOME;

			}

		} catch (ServletException e) {

		}

		rd = request.getRequestDispatcher(path);

		rd.forward(request, response);
	}

}
